﻿/**
 * 覆盖module.js中同名变量
 * @type String
 */
module.rootUrl = 'authority/';
// 新增的属性,资源树id
module.actionTreeId = 'actiontree'

/**
 * 刷新树数据
 * 
 * 覆盖module.js中同名方法
 */
module.reloadTree = function (){
	$('#' + module.treeId).tree('reload');
	$('#AParentid').combotree('reload');
};
function formatterStatus(value, row, index){
	return value==1 ?"<img src=\"res/img/ok.png\"/>":"<img src=\"res/img/cross.png\"/>";
}
/**
 * 装载表单数据
 * 
 * 覆盖module.js中同名方法
 * 
 * @param data
 *            装载的数据
 */
module.loadForm = function (data) {
	$('#' + module.fromId).form('load', {
		id : data.id,
		AName : data.text,
		AParentid : data.parentId,
		AOrder : data.a_order,
		ARemarks : data.a_remarks,
		AStatus : data.a_status
	});
	
	// 选中当前角色的所有权限
	var node = null;
	var tree = $('#' + module.actionTreeId);
	var nodeIds = data.res_id ? String(data.res_id).split(',') : '';
	
		for(var i=0;i<nodeIds.length;i++){
			var node =tree.tree('find',nodeIds[i]);
			var isleaf =tree.tree('isLeaf',node.target);
			if(isleaf){
				tree.tree('check',node.target);
				}
			
		}
	
	/*for (var index = 0; index < nodeIds.length; index++) {
		node = tree.tree('find', nodeIds[index]);
		tree.tree('check', node.target);
	}*/
};

/**
 * 树菜单树选择事件
 * 
 * 覆盖module.js中同名方法
 * 
 * @param node 节点数据
 */
module.onSelectTree = function (node) {
	module.selectTreeNode = node.id;
	// 判断是否为根节点
	if (!node.id || node.id == -1) {
		// 如果角色Id为空或者为-1则刷新列表
		module.reloadDatagrid();
	} else {
		// getAllChildNodeId函数在tree.js
//		var ids = getAllChildNodeId(this, node);
		var filters = [];
		// 判断是否为叶子节点,如果是叶子节点则没有子节点
//		if ($(this).tree('isLeaf', node.target)) {
//			filters.push(add_condition("and", "等于", "pa", "id", ids.join(), "", "number"));
//		} else {
//			filters.push(add_condition("and", "in", "pa", "id", ids.join(), "", "string"));
//		}
		filters.push(add_condition("and", "", "", "(", "", "", ""));
		filters.push(add_condition("and", "等于", "pa", "id", node.id, "", "number"));
		filters.push(add_condition("or", "等于", "pa", "a_parentid", node.id, "", "number"));
		filters.push(add_condition("and", "", "", ")", "", "", ""));
		fun_query(module.datagrid, filters);
	}
};
//权限资源选择列表
function action_nav_tree_select(node){
	if (!node.id || node.id == -1) {
		// 如果角色Id为空或者为-1则刷新列表
		$("#action_choose_grid").datagrid('reload');
	} else {
		// getAllChildNodeId函数在tree.js
		var ids = getAllChildNodeId(this, node);
		var filters = [];
		// 判断是否为叶子节点,如果是叶子节点则没有子节点
		if ($(this).tree('isLeaf', node.target)) {
			filters.push(add_condition("and","","","(","","",""));
			filters.push(add_condition("and", "等于", "a", "id", ids.join(), "", "number"));
			filters.push(add_condition("or", "等于", "a", "a_parentid", ids.join(), "", "number"));
			filters.push(add_condition("and","","",")","","",""));
		} else {
			filters.push(add_condition("and","","","(","","",""));
			filters.push(add_condition("and", "in", "a", "id", ids.join(), "", "string"));
			filters.push(add_condition("or", "in", "a", "a_parentid", ids.join(), "", "string"));
			filters.push(add_condition("and","","",")","","",""));
		}
		fun_query("action_choose_grid", filters);
	}
}
/**
 * 打开信息编辑框
 * 
 * 覆盖module.js中同名方法
 */
module.openDialog = function () {
	// 取消选择所有已选择的权限
	var tree = $('#' + module.actionTreeId);
	var nodes = tree.tree('getChecked');
	for (var index = 0; index < nodes.length; index++) {
		tree.tree('uncheck', nodes[index].target);
	}
	// 清空表单
	$('#' + module.fromId).form('clear');
	$('#' + module.dialogId).dialog('open');
	var node = $('#' + module.treeId).tree('getSelected');
	if (node) {
		$('#AParentid').combotree('setValue', node.id);
	}
};
//权限配置
function open_authset_dialog(){
	var rows=$('#module_datagrid').datagrid('getSelections');	
	if(rows.length==0){
		Common.Util.showMessager({msg:"<b style='color:red;'>请选择数据!</b>"});
		return;
	}else if(rows.length!=1){
		Common.Util.showMessager({msg:"<b style='color:red;'>一次只能操作一条!</b>"});
		return;
	}
	var id=$("#module_datagrid").datagrid('getSelected').id;
	$("#action_choose_grid").datagrid('load',{aid:id});
	$('#auth_set_dialog').dialog('open');
}
//已经存在的资源变成蓝色
function authSetRowstyler(index,row){
	if(row.flag){
		return 'color:blue;';//'background-color:#ffee00;color:red;';font-weight:bold;
	}
}
/**
 * 表单提交
 * 
 * 覆盖module.js中同名方法
 */
module.edit = function () {
	var isValid = $('#' + module.fromId).form('validate');
	if (isValid){
		var data = $('#' + module.fromId).serialize();
		/*var nodes=$('#' + module.actionTreeId).tree('getChecked', ['checked','indeterminate']);
		
		if (nodes.length == 0) {
			Common.Util.showMessager({msg:"请选择资源!"});
			return;
		}
		for (var index = 0; index < nodes.length; index++) {
			data += '&Resid=' + nodes[index].id;
		}*/
		Common.Util.ajax(module.rootUrl + module.modifyUrl, data, function (msg) {
			module.reloadTree();
			if (null == module.selectTreeNode) {
				module.reloadDatagrid();
			}
			module.closeDialog();
			}
		);
	}
};
/**
 * ajax请求
 * 
 * 覆盖module.js中同名方法
 * 
 * @param data
 *            装载的数据
 */
module.ajaxRequest = function (url) {
	Common.Util.sendTreeDataIds(module.treeId, module.datagrid, module.rootUrl + url, function (msg) {
		// 刷新树,在有菜单树的情况下,在此请不要手动刷新数据列表
		// 请参照本action.js和action.html为菜单树添加onLoadSuccess事件和onSelect事件
		module.reloadTree();module.reloadDatagrid();
	});
};

/**
 * 数据查询
 * 
 * 覆盖module.js中同名方法
 */
module.queryDatagrid = function () {
	var authorityname = $('#authorityname').textbox('getValue');

	var filters = [];
	// 判断查询参数是否为空
	if (!Common.Util.isEmpty(authorityname)) {
		filters.push(add_condition("and", "包含", "pa", "a_name", authorityname, "", "string"));
	}

	// 执行查询
	fun_query(module.datagrid, filters);
	filters = null;
};

/**
 * 角色下拉框数据过滤
 * 
 * @param data
 *            过滤的数据
 * @returns 返回过滤后的数据
 */
function roleLoadFilter(data) {
	return data.rows;
}
//权限配置弹出框 列表格式化
function formatterActionType(value, row, index){
	if(row.a_type==0){
		//类型
		return "<img src=\"res/rbac/icons/link.png\" title=\"URL\"/> "+value;
	}else if(row.a_type==1){
		//数据
		return "<img src=\"res/rbac/icons/html.png\" title=\"html元素\"/> "+value;
	}else if(row.a_type==2){
		//数据
		return "<img src=\"res/rbac/icons/folder.png\" title=\"html元素\"/> "+value;
	}else if(row.a_type==3){
		//数据
		return "<img src=\"res/rbac/icons/box.png\" title=\"分类\"/> "+value;
	}
}

function resBindAuth(){
	var rows=$('#action_choose_grid').datagrid('getSelections');	
	if(rows.length==0){
		Common.Util.showMessager({msg:"<b style='color:red;'>请选择数据!</b>"});
		return;
	}
	var resids = new Array();
	var error=false;
	for(var i=0;i<rows.length;i++){
		if(rows[i].flag){
			error=true;
			break;
		}else{
			resids.push(rows[i].id); 
		}
	}
	if(error){
		Common.Util.showMessager({msg:"<b style='color:red;'>选择数据中包含已存在的资源!</b>"});
		return;
	}
	 $.messager.confirm('提示', '是否添加所选资源?', function(r){
         if (r){
            //
        	 $.ajax(
     	            {
     	                url : "authority/resBindAuth.do", 
     	                type : "post",
     	                data :
     	                {
     	                   aid:$("#module_datagrid").datagrid('getSelected').id,
     	                   resid:resids
     	                },
     	                success : function (res)
     	                { 
     	                    if (res.status)  
     	                    {
                         	  $.messager.alert('提示','操作成功','info');
     	                        $("#action_choose_grid").datagrid('reload');
     	                    } 
     	                    else
     	                    {
     	                    	$.messager.alert('提示',res.msg,'error');
     	                    }
     	                },
     	                error : function ()
     	                {
     	                	$.messager.alert('提示',"AJAX执行错误",'error'); 
     	                },
     	                dataType : "json"
     	            }
     	            );
        	 //
         }
     });
	
}
//删除
function deleteAuthOfRes(){
	var rows=$('#action_choose_grid').datagrid('getSelections');	
	if(rows.length==0){
		Common.Util.showMessager({msg:"<b style='color:red;'>请选择数据!</b>"});
		return;
	}
	var resids = new Array();
	var error=false;
	for(var i=0;i<rows.length;i++){
		if(!rows[i].flag){
			error=true;
			break;
		}else{
			resids.push(rows[i].flag); 
		}
	}
	if(error){
		Common.Util.showMessager({msg:"<b style='color:red;'>只能选择蓝色资源进行移除!</b>"});
		return;
	}
	 $.messager.confirm('提示', '是否添加所选资源?', function(r){
         if (r){
            //
        	 $.ajax(
     	            {
     	                url : "authority/deleteAuthOfRes.do", 
     	                type : "post",
     	                data :
     	                {
     	                  resid:resids
     	                },
     	                success : function (res)
     	                { 
     	                    if (res.status)  
     	                    {
                         	  $.messager.alert('提示','操作成功','info');
     	                        $("#action_choose_grid").datagrid('reload');
     	                    } 
     	                    else
     	                    {
     	                    	$.messager.alert('提示',res.msg,'error');
     	                    }
     	                },
     	                error : function ()
     	                {
     	                	$.messager.alert('提示',"AJAX执行错误",'error'); 
     	                },
     	                dataType : "json"
     	            }
     	            );
        	 //
         }
     });
	
}

/**
 * 权限配置查询
 */
function keyWordQuery(){
	debugger;
	var value1=$('#keywordinput').val(); 
	
	var filters = [];
	var flag=false;
	if (!value1 || (value1.replace(/(^\s*)|(\s*$)/g, "").length == 0)) {
		// 如果查询参数为空则刷新列表
		
	} else{
		filters.push(add_condition("or", "包含", "a", "a_name", value1, "", "string"));
		filters.push(add_condition("or", "包含", "b", "a_name", value1, "", "string"));
		filters.push(add_condition("or", "包含", "a", "a_url", value1, "", "string"));
		filters.push(add_condition("or", "包含", "a", "a_remarks", value1, "", "string"));
		flag=true;
	}
		// 查询参数不为空则执行查询
	if(flag){
		fun_query('action_choose_grid', filters);
	}
}